草庐IT

POSIX信号量

全部标签

c - ftruncate 不适用于 Mac OS X 中的 POSIX 共享内存

我在MacOSX上写了一段代码来使用POSIX共享内存,如下所示:#include#include#include#include#includeintmain(){intfileHandle=shm_open("TW_ShMem1",O_CREAT|O_RDWR,0666);if(fileHandle==-1){//error.}else{//Here,itisfailingonMacOSXif(-1==ftruncate(fileHandle,8192)){shm_unlink("TW_ShMem1");fileHandle=-1;}else{return0;}}return1;}

linux - POSIX:FreeBSD 与 Linux 中的管道系统调用

在Linux(2.6.35-22-generic)中,manpipe指出pipe()createsapipe,aunidirectionaldatachannelthatcanbeusedforinterprocesscommunication."在FreeBSD(6.3-RELEASE-p5)中,manpipe指出Thepipe()systemcallcreatesapipe,whichisanobjectallowingbidirectionaldataflow,andallocatesapairoffiledescriptors."一个是单向的,一个是双向的。我希望这不是一个愚蠢

linux - POSIX:FreeBSD 与 Linux 中的管道系统调用

在Linux(2.6.35-22-generic)中,manpipe指出pipe()createsapipe,aunidirectionaldatachannelthatcanbeusedforinterprocesscommunication."在FreeBSD(6.3-RELEASE-p5)中,manpipe指出Thepipe()systemcallcreatesapipe,whichisanobjectallowingbidirectionaldataflow,andallocatesapairoffiledescriptors."一个是单向的,一个是双向的。我希望这不是一个愚蠢

c++ - 大多数时候从 POSIX 线程在 C++ 中打开/proc/net/tcp 失败

当我尝试从C++中的子POSIX线程打开/proc/net/tcp时,它失败并显示“没有这样的文件或目录”错误。如果我尝试从父线程打开它,它每次都会成功,而在父线程中打开/关闭它的过程也会使它在子线程中成功大约三分之一的时间。我可以100%地在子线程中打开/proc/uptime而不会出现问题。下面是一些可以用“g++-Walltest.cc-otest-pthread”编译的示例代码:#include#include#include#include#includeusingnamespacestd;void*open_test(void*){ifstreamin;in.open("/

c++ - 大多数时候从 POSIX 线程在 C++ 中打开/proc/net/tcp 失败

当我尝试从C++中的子POSIX线程打开/proc/net/tcp时,它失败并显示“没有这样的文件或目录”错误。如果我尝试从父线程打开它,它每次都会成功,而在父线程中打开/关闭它的过程也会使它在子线程中成功大约三分之一的时间。我可以100%地在子线程中打开/proc/uptime而不会出现问题。下面是一些可以用“g++-Walltest.cc-otest-pthread”编译的示例代码:#include#include#include#include#includeusingnamespacestd;void*open_test(void*){ifstreamin;in.open("/

c - sigwait() 和信号处理程序

如果我为SIGABRT设置和发出信号处理程序,同时我有一个线程在sigwait()上等待SIGABRT到来(我在其他线程中有一个被pthread_sigmask阻塞的SIGABRT)。那么先处理哪一个呢?信号处理程序或sigwait()?[我面临一些问题,sigwait()永远被阻止。我目前正在调试它]main(){sigset_tsignal_set;sigemptyset(&signal_set);sigaddset(&signal_set,SIGABRT);sigprocmask(SIG_BLOCK,&signal_set,NULL);//DontdeliverSIGABORTw

c - sigwait() 和信号处理程序

如果我为SIGABRT设置和发出信号处理程序,同时我有一个线程在sigwait()上等待SIGABRT到来(我在其他线程中有一个被pthread_sigmask阻塞的SIGABRT)。那么先处理哪一个呢?信号处理程序或sigwait()?[我面临一些问题,sigwait()永远被阻止。我目前正在调试它]main(){sigset_tsignal_set;sigemptyset(&signal_set);sigaddset(&signal_set,SIGABRT);sigprocmask(SIG_BLOCK,&signal_set,NULL);//DontdeliverSIGABORTw

c - 用户级程序应该捕获哪些 "fatal"信号?

首先,Idoknowthattherewasasimilarquestionhereinthepast.但是这个问题没有得到正确的回答。相反,它转变为建议如何捕捉信号。所以澄清一下:我已经完成了处理信号所需的一切工作。我有一个应用程序派生一个守护进程,它通过管道监视主进程。如果主进程崩溃(例如段错误),它有一个信号处理程序将所有必需的信息写入管道并中止。目标是在应用程序发生问题时获得尽可能多的信息,而不会干扰“正常”操作,例如SIGHUP、SIGUSR1等。所以我的问题是:我应该捕捉哪些信号?我的意思是,如果我没有捕捉到它们,无论如何都会导致应用程序中止。到目前为止,我得出了以下列表:

c - 用户级程序应该捕获哪些 "fatal"信号?

首先,Idoknowthattherewasasimilarquestionhereinthepast.但是这个问题没有得到正确的回答。相反,它转变为建议如何捕捉信号。所以澄清一下:我已经完成了处理信号所需的一切工作。我有一个应用程序派生一个守护进程,它通过管道监视主进程。如果主进程崩溃(例如段错误),它有一个信号处理程序将所有必需的信息写入管道并中止。目标是在应用程序发生问题时获得尽可能多的信息,而不会干扰“正常”操作,例如SIGHUP、SIGUSR1等。所以我的问题是:我应该捕捉哪些信号?我的意思是,如果我没有捕捉到它们,无论如何都会导致应用程序中止。到目前为止,我得出了以下列表:

shell - 如何以 POSIX 方式实现 'set -o pipefail' - 即将完成,需要专家帮助

我必须以POSIX方式实现BASHset-opipefail选项,以便它适用于各种LINUX/UNIX风格。稍微解释一下,此选项使用户能够验证所有管道命令是否成功执行。启用此选项后,此命令catapp.log|如果cat失败,则grep'ERROR'失败,否则cat错误将被抑制。所以,我在这里找到了一个非常好的解决方案:http://cfaj.ca/shell/cus-faq-2.htmlrun(){j=1whileeval"\${pipestatus_$j+:}false";dounsetpipestatus_$jj=$(($j+1))donej=1com=k=1l=fora;doi