天软考c语言,软考中C语言试题问答精选

问:为何这样会造成死机。请大伙帮帮。在BCB中。

DWORD Tid;

HANDLE THandle;

THandle = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)MyThread, NULL, CREATE_SUSPENDED, &Tid);

DWORD Tid2;

HANDLE THandle2;

THandle2= CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)MyThread2, NULL, CREATE_SUSPENDED, &Tid2);

void __fastcall TForm1::MyThread() //static 的函数

{

for(int i=1;i<=100;i+=2)

Form1->RichEdit1->Lines->Add(i);

}

void __fastcall TForm1::MyThread2() //static 的函数

{

for(int i=2;i<=100;i+=2)

Form1->RichEdit1->Lines->Add(i);

}

答:1、线程函数不能是类成员函数(特别是vcl类),只能是独立的函数;

2、线程实体须注意线程安全。

*****

问:请教各位,在WINDOWS98下有无C语言运行编译程序,TURBO C好象不怎么好用?

答:TC可以在9x的dos box下很好的运行。

tc bc vc watcom c djgpp mingw 太多了数不完。

*****

问:错误1:

rpm -bi opennms-0.7.2-2.src.rpm

File contains non-printable characters(?: /home/opennms/opennms-0.7.2-2.src.rpm

错误2:

rpm -i jsse-1.0.2-3onms.src.rpm

only packages with major numbers <= 3 are supported by this version of RPM

error: jsse-1.0.2-3onms.src.rpm cannot be installed

多谢指教

答:你的rpm版本太旧了。

*****

问:我现在要做一个Unix进程管理系统,其中一个功能是,当被监控的进程崩溃以后,进程管理器可以自动重新启动这个程序,(进程管理器是以守护进程的形式出现的)

要重新启动一个进程,必须要做的其中一个步骤,就是要模拟出进程启动时候的环境

譬如说,进程A是用户user_A在 /usr/shacker里面执行 "BootServer 4001"这样的命令得到的,对于进程A来说,工作目录就是/usr/shacker. 当进程A崩溃了,重新启动这个进程,除了要重新执行这个命令"BootServer 4001"以外,按照我的想法,还需要使这个进程工作于/usr/shacker里面

所以我的做法是

int main(){

pid_t pid;

if ((pid=fork())==0)

{

//in child

chdir("崩溃进程的工作目录");//譬如说 /usr/shacker

system("执行崩溃进程的命令行"); //譬如说ls >filelist

}

else

{

}

但发现是不行的,system("执行崩溃进程的命令行")以后,需要重启动的崩溃进程工作目录还是进程监控系统的工作目录,显然是不合理的

怎么解决这个问题呢?thanks

答:system("脚本程序");在脚本程序里面想去哪个目录不行啊。

答2:#include <unistd.h>

#include <errno.h>

#include <stdio.h>

int main()

{

switch(fork()) {

case 0:

if(chdir("/tmp")) {

perror("chdir");

exit(1);

}

system("ls >out.txt");

exit(0);

case -1:

exit(1);

default:

exit(0);

}

}

上面的程序在FreeBSD4.2下通过。另外参考:

fork(), getcwd(), getwd(), chdir(), chroot()等函数的man手册。

*****

问:为什么一个系统上次修改后下次启动可以保留上次修改的属性。是不是以文件的方式保留的系统状态?

答:一般在注册表或文件(ini文件)里保存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值