我有通过系统调用 rsh 以这种方式启动的 ac 程序
system(" rsh -l $DTT $CTT './script.sh' ");
$DTT 和 $CTT 是环境变量,我在其中加载用户和主机名字符串
当c程序正常时,rsh工作良好,但是当我在守护进程中转换c程序然后执行它时,进程rsh一直锁定在ubuntu系统管理器中,浪费大量CPU资源,rsh工作一半,它执行操作但它保持阻塞。
下面是转换我的使用 rsh 的 c 程序的代码。
pid_t process_id = 0;
pid_t sid = 0;
//Crea processo figlio
process_id = fork();
// Indica il fallimento della fork()
if (process_id < 0)
{
printf("fork failed!\n");
// ritorna fallimento nello stato di uscita
exit(1);
}
// PROCESSO PADRE. Occore ucciderlo.
if (process_id > 0)
{
printf("process_id of child process %d \n", process_id);
// ritorna successo nello stato di uscita
exit(0);
}
//unmask the file mode
umask(0);
//setta nuova sessione
sid = setsid();
if(sid < 0)
{
// Return failure
exit(1);
}
// Chiude gli sdandard INPUT,OUTPUT e di ERRORE stdin. stdout and stderr
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
问题解决了!我将标准输出重定向到一个文件中,rsh 没有给我任何问题!