gpt4 book ai didi

c - 使用 sudo 启动程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:36:19 24 4
gpt4 key购买 nike

我想用sudo启动一个程序,我用过这个命令

sudo './ConnectionManager'

在一个:

Distributor ID: ScientificSL
Description: Scientific Linux SL release 5.5 (Boron)
Release: 5.5
Codename: Boron
(Like Centos5.5)

可以用,但是不能用

Distributor ID: Scientific
Description: Scientific Linux release 6.4 (Carbon)
Release: 6.4
Codename: Carbon

在最后一种情况下,我立即收到以下消息:[1]+ 停止 sudo './ConnectionManager'

我检查了代码,问题出在 ConnectionManager 中的指令 int setpgrp(void)

ConnectionManager 是一个用 C 编写的程序,它 fork 一个进程以等待 tcp/ip 连接。

有人可以帮助我吗?

遵循示例代码

#include <stdio.h>
#include <ncurses.h>
...
int main()
{

if (chdir("/opt/informix/server") == -1)
{
printf("Errore nella directory /opt/informix/server\n");
getch();
exit(1);
};


signal(SIGINT, onexit);
signal(SIGUSR1, RefreshMainWindow);

signal(SIGPIPE, SIG_IGN);
signal(SIGCLD, SIG_IGN);
setpgrp();

ParentPid = getpid();



/***/
if (LockFile(_true) != _ok)
{
exit(1);
}

if (CreateDestroyShm(_true) != _ok)
{
exit(1);
}

...

if (LockFile(_false, &sdebug) != _ok)
{
exit(1);
}


/***/

init_curses();
menubar = subwin(stdscr, 1, MAXCOLS, 0, 0);
main_win = subwin(stdscr, MAXROWS-1, MAXCOLS, 1, 0);
cbreak(); /* immediately acquire each keystroke */
PrintTestata();
draw_menubar(menubar);

/***/



switch (fork())
{
case 0:
signal(SIGUSR1, SIG_IGN);
break;
default:

KeyboardHandler();
}


void init_curses()
{

putenv("TERM=xterm");

initscr();
wresize(stdscr, MAXROWS, MAXCOLS);
start_color();
init_pair(1,COLOR_WHITE,COLOR_RED);
init_pair(2,COLOR_BLUE,COLOR_WHITE);
init_pair(3, COLOR_GREEN, COLOR_BLUE);
init_pair(4, COLOR_RED, COLOR_BLUE);
curs_set(0);
noecho();
keypad(stdscr,TRUE);
touchwin(stdscr);
wrefresh(stdscr);
}

最佳答案

也许您的进程不在 session 前台进程组中,尽管如此仍尝试读取或写入终端。

请参阅 http://man7.org/linux/man-pages/man2/setpgid.2.html 中的“注释”部分和来自 http://www.linusakesson.net/programming/tty/ 的“作业和 session ” .

您还可以检查代码 if (tcgetpgrp(STDOUT_FILENO) == getpgid(0))。如果不是,则您不在前台。

关于c - 使用 sudo 启动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17857003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com