我的代码不能在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将无法正常工作。