在Ubuntu上运行的C程序在其他操作系统中不起作用

时间:2018-03-16 17:05:09

标签: linux debian ubuntu

我的代码不能在Ubuntu以外的任何其他操作系统中运行,也许不是整个程序,而是它的某些部分。让我们从头开始。首先,我编写的代码运行正常,但我需要SU,我不得不改变它。

我更改了一些标志,在Ubuntu上一切正常,但在其他操作系统代码中无法正常工作。所以我编写了相关的部分代码,从我看到的程序将不会输入。

    //attack From P1:
if(!fork()) {
    struct Battle battle;
    while(1) {
        **if(msgrcv(IPC_ID, &battle, IPC_size, Attack_From_P1, 0)** == IPC_size) 
{
            char strLoses[IPC_size] = "";
            int kogo = battle.kogo;
            char lose[IPC_size];
            int lin = battle.jednostki[0];//units
            int hin = battle.jednostki[1];
            int hor = battle.jednostki[2];
            opusc(semid, 0);//down
            int intShmLin1 = atoi(shmLin1);
            int intShmHin1 = atoi(shmHin1);
            int intShmHor1 = atoi(shmHor1);
            int intLin;
            int intHin;
            int intHor;

}
void wyslij_Komunikat(int signal, char text[IPC_size], int number) {//send Message
msg.mtype = signal;
strcpy(msg.mtext, text);
msg.number = number;
int id = msgsnd(IPC_ID, &msg, IPC_size, 0);
if(id == -1) {
    perror("Problem podczas wysyłania wiadomosci");//Problem while sending message
    exit(1);
}

特别是没有任何反应,我遇到的另一个问题是在家里我只有Ubuntu,它的工作没有任何问题。

            else if(strcmp(consoleInput, "atak") == 0) { atak(playerID);//attack 

第一个代码块用于sendMessage(),第二个检查用户使用的命令。

修改

问题是,在Ubuntu上我没有得到任何错误/警告,一切正常,在其他操作系统上,我没有得到任何错误/警告,Forfeit和Attack将无法正常工作。

0 个答案:

没有答案