以下給出的代碼(process1)與actaul scanrio類似。我使用process1的進程ID從另一個應用程序更新global_data
。過程在後臺執行時會停止
由於getchar()
在過程1中,當運行此過程類似,則顯示
$ ./process1 &
以下消息。
[1]+ Stopped (tty input) ./process1
我不能刪除getchar()
。所以如何運行這兩個應用程序。
注意:嘗試telnet/ssh選項。如果我通過telnet連接,那麼只有該telnet窗口處於活動狀態。在最大限度內,我只能通過一個終端工作。
#include <stdio.h>
volatile int global_data = 0;
int main()
{
FILE *fp = NULL;
int data = 0;
printf("\n Address of global_data:%x \n", &global_data);
while(1)
{
if(global_data == 0)
{
getchar();
continue;
}
else if(global_data == 2)
{
fp = fopen("JeyTest.txt", "w+");
if(fp == NULL)
{
printf("\n Error in file creation..... \n");
break;
}
for(data = 0; data < 1000; data++)
{
fprintf(fp, "%d\n", data);
}
fclose(fp);
break;
}
}
return 0;
}
如果您不使用共享內存,如何更改'global_data'? –
使用'ptrace'我可以讀取另一個進程的數據部分。 – Jeyaram
爲什麼不使用共享內存?我會說這很容易(並且實際上是爲它設計的......) –