下面给出的代码(process1)类似于actaul scanrio。我使用process1的进程ID从另一个应用程序更新global_data
。
由于process1中的getchar()
,当我运行此过程时,$ ./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;
}
最佳答案
使用要引入到流程中的数据创建一个文本文件,然后重定向输入:
$ ./process1 < file_with_data &
此模式避免停止进程,因为将从文件中获取标准输入。输入文件必须具有足够的数据来处理流程。
关于c - 如果在后台执行,则进程停止,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16052949/