Tag: linux

execl的返回值

我正在运行execl函数来通过我的代码编译程序。 我想检查编译是否正确。 所以我写了b = execl(“usr/bin/gcc”,”cc”,path,NULL); 然后检查if( b==-1) 。 但即使汇编中存在错误,它也没有进入if语句。 有什么想法吗? 谢谢! int b=0; if ((pid1 = fork())<0) perror("Error forking"); else { if(pid1==0) b= execl("/usr/bin/gcc","cc",path,NULL); else wait(&status); } if(b==-1) printf("\n——–\n");

不想立即删除终止子进程,需要成为僵尸

我从SE QUE获得以下信息明确地将SIGCHLD的处置设置为SIG_IGN会导致随后终止的任何子进程立即从系统中删除而不是转换为僵尸。 据我所知,要读取子状态,需要在进程表中使用子进程。 因此有必要在进程表中使用zombie子进程来读取子状态。 所以我想编写信号处理程序,它将删除“将SIGCHLD的处置设置为SIG_IGN” 我使用下面的代码(在fork之前)以避免在终止后立即删除子进程:但我仍然无法获得子状态并且waitpid使用ECHILD返回-1。 #include #include #include #include #include #include static siginfo_t sig_info; static volatile sig_atomic_t sig_num; static void *sig_ctxt; static void catcher(int signum, siginfo_t *info, void *vp) { sig_num = signum; sig_info = *info; sig_ctxt = vp; } static void set_handler(int signum) { struct sigaction sa; sa.sa_flags = SA_SIGINFO; sa.sa_sigaction = catcher; […]

如何在C中设置运行时字符集?

如何在Linux环境下用C编程语言设置运行时字符集? 例如,我想将其设置为iso8859-1,utf-8或ascii。

什么是Linux中C和PHP之间良好的进程间通信方法

我实际上不知道我是否在问一个正确的问题。 让我先描述一下我的问题。 最终用户 Web服务器(通过PHP)内部进程(通过C或C ++)外部硬件 1应该像ajax请求。 2应该是进程间通信。 3应该是uart RS232通信。 最终用户将请求更改硬件上的某些设置,然后请求将传播到硬件。 硬件回复成功或失败,然后结果将传播回用户。 硬件回复延迟可以在1秒内。 因此,当Web服务器收到来自最终用户的ajax请求时,它将保存并向c / c ++程序发送IPC请求。 c / c ++程序将通过UART发送并保持并等待硬件回复。 对于UART部分,有异步uart模型,因此c / c ++程序不需要持续等待UART。 Web服务器将等待c / c ++程序返回(再次通过IPC),然后将结果转发回最终用户。 由于webserver没有内存,所以不能有任何异步的东西(据我所知)。 我可以想到一个通过文件或数据库的简单方法。 Web服务器不断读取文件或数据库以进行回复。 但我真的不认为这是一个好方法,因为它会导致服务器CPU周期的浪费。 如果我可以容忍一些延迟,那么这取决于,但我认为用户端的几秒延迟对他们来说是好的。 你能给我一些很好的IPC方法来实现我的目的吗? 而且,如果您认为整个过程或任何特定链接(包括链接1,2和3)有更好的解决方案(比我上面的描述),请同时分享您的2cent。 希望我能清楚地问我的问题。 谢谢。

在Linux体系结构中使用C代码动态列出所有函数/符号?

假设main.c使用来自main.c声明的共享库和本地函数的符号。 是否有一种漂亮而优雅的方式在运行时打印所有可用function名称和符号的列表? 应该可以,因为数据被加载到.code段。

推荐的信号要赶上?

目前,我抓住SIGSEGV,给自己发一封电子邮件,然后abort(),这样我就可以得到一个核心文件并调试我的程序。 (如果我没有抓到,我将无法知道我的特定程序是否已被发现。我的程序是在与我自己的服务器不同的服务器上运行的。) 是否有任何其他信号我应该抓住调试或我应该知道的原因?

从用户模式增加线程量

在Linux内核3.0+上是否可以从用户模式增加线程的量子? 怎么样?

无法配置交流编译器

我正在尝试使用gcc 4.7编译一些库(我刚从4.6.3升级,不知何故它抱怨c编译器: /home/rtbkit/platform-deps/node/wscript:263: error: could not configure ac compiler! make[1]: Entering directory `/home/rtbkit/platform-deps/node’ Project not configured (run ‘waf configure’ first) make[1]: *** [program] Error 1 make[1]: Target `all’ not remade because of errors. make[1]: Leaving directory `/home/rtbkit/platform-deps/node’ make[1]: Entering directory `/home/rtbkit/platform-deps/node’ Project not configured (run ‘waf configure’ first) make[1]: *** [program] Error 1 make[1]: Target […]

作为进程子进程,如何知道哪个文件描述符是父进程

我正在尝试编写一个程序,该程序分叉并等待他的孩子完成,然后孩子在输入上做一些工作然后以与父母一样的方式分叉等等。 现在,我知道分支复制到子文件描述符数组,我应该关闭与父文件关联的那些,但我无法弄清楚哪些是父文件。 我需要给孩子这是父母的pid吗? 我一直试图在一小时的大部分时间里绕过它,我想我有一种心灵障碍,因为我无法得出结论。 TL; DR:作为子进程,我如何知道哪些文件描述符属于我的父进程?

灰度图像转换.img到.ras – 在Windows中的白色和蓝色的灰度等级?! C

我想将.img文件(512字节标题,512×512像素,每像素8位(值:0-255))转换为.ras文件。 为此,我在本文末尾得到了C代码。 我的测试图像(test.img)的输出应该是黑/白图像 – 所以只包含0或255的值。但问题是,当我在Windows中编译C代码(从底部)时,我的结果。 ras文件是白色还是亮蓝色?! 奇怪的是。 当我在Linux中编译C代码时,结果是完全黑/白?! 这怎么来的? 在两个系统中我使用了64位。 所以你可以尝试一下:1。用以下代码编译C代码:gcc -lm img2ras.c -o img2ras 2.通过控制台将.img转换为.ras:img2ras test.img test.ras 3.在gimp中观察.ras文件,XnView或PaintshopPro 你是否有任何线索如何在具有相同版本的gcc 4.8.1的不同操作系统上发生这种尴尬的结果? test.img: http : //www.file-upload.net/download-8629102/test.img.html img2ras.c /* this program accepts an input file (which comes from the image capturing board) and an output file, which must be specified on the command line. The output file […]