简单的问题,但我还没有找到答案.给定一个特定的PID,我可以确定该过程是否有效?我正在研究一个C程序,这让我疯狂.我读到了可以解决问题的地方kill(pid,0),但无论进程是否正在运行(或者看起来如此),都会返回0.
任何提示?
附加信息:我感兴趣的过程是由孩子发起的一个孩子fork().子进程应该在到达语句时终止exit(0).至少那是我的预期......显然它没有.
进一步的附加信息:使用fork()执行系统命令创建的子进程,根据最终用户可能会有所不同.整个过程是批处理过程的一部分,因此没有机会进入并修复某些东西.此子进程可能必须执行的任务之一是建立与远程服务器的连接,以便在那里存储一些文档.这可能是另一台Linux机器,也可能是Win Server(或其他可能的东西).出于这个原因,我不想等待子进程.我希望父母等待一段特定的时间(例如10秒)然后杀死子进程,如果它还没有完成的话.出于同样的原因,如果孩子在3毫秒内完成任务,我不希望父进程等待10秒.
看来我不是第一个遇到这个问题的人.
我有一个想要运行的数据泵导出脚本。数据库是 Oracle 11g。为了尝试一下,我一直在 SQLDeveloper 中执行它。该脚本如下所示:
DECLARE
JOBHANDLE NUMBER;
STATUS VARCHAR2(20);
LOGFILE UTL_FILE.FILE_TYPE;
LINE VARCHAR2(200);
ROW NUMBER := 1;
TYPE OUTPUT_TYPE IS TABLE OF VARCHAR2(128) INDEX BY PLS_INTEGER;
OUTPUT OUTPUT_TYPE;
BEGIN
EXECUTE IMMEDIATE 'CREATE OR REPLACE DIRECTORY "TESTDIR11" AS ''/home/achim/temp/0003759/T0987654321/'' ';
JOBHANDLE := DBMS_DATAPUMP.OPEN(
operation => 'EXPORT',
job_mode => 'TABLE',
job_name => 'TST TMF.ACHIMSTEST11');
DBMS_DATAPUMP.ADD_FILE(
HANDLE => JOBHANDLE,
filename => 'Q01DED3D.dmp',
directory => 'TESTDIR11',
filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_DUMP_FILE
,reusefile => 1
);
DBMS_DATAPUMP.ADD_FILE(
HANDLE => JOBHANDLE,
filename => 'Q01DED3D.log',
directory => 'TESTDIR11', …Run Code Online (Sandbox Code Playgroud)