当前位置:  技术问答>linux和unix

systemV 信号灯问题

    来源: 互联网  发布时间:2016-11-28

    本文导语:  仿照(Unix网络编程 第二卷第二版)的第11章SystemV信号灯 写了下面的程序,运行出现问题,请问原因,谢谢! 编译和运行都可以进行,但是设置信号灯集中的各信号灯值时显示信号灯集中的信号灯数目为nsems=4436512,显...

仿照(Unix网络编程 第二卷第二版)的第11章SystemV信号灯 写了下面的程序,运行出现问题,请问原因,谢谢!
编译和运行都可以进行,但是设置信号灯集中的各信号灯值时显示信号灯集中的信号灯数目为nsems=4436512,显示值各信号灯值时显示信号灯数目为nsems=-1075867592,当然也没有设置成功了。 而我创建时明明创建成功了,设置成3个。
没有找到redhat下的原因,特请教。

代码比较长,不过去掉一些处理性的真正有用的只有不到十行,请耐心查看帮忙,谢谢!


代码1: semcreate.c

#include "../LinuxComm.h" //自己写的包含头文件.

int main(int argc , char ** argv)
{
int c,oflag,semid,nsems;
oflag =IPC_EXCL| IPC_CREAT;
printf("Program start...n");

while( (c=getopt(argc,argv,"e"))!=-1 )
{
switch(c)
{
case 'e': oflag |=IPC_EXCL;
break;
}
}
if(optind!=argc-2)
{
printf("Usage: semcreate [-e]   ,Program will exit...n");
exit(2);
}
printf("optind=%d, argc=%dn",optind,argc);

nsems =atoi( argv[optind+1] );
printf("nsems=%dn",nsems);
semid =semget( ftok(argv[optind],0) , nsems , oflag );

if(-1==semid)
{
printf("semget Failed,errno=%d, Program will exit...n",errno);
exit(2);
}

printf("Program will exit...n");
exit(0);
}



代码2: semsetvalues.c

#include "../LinuxComm.h"

int
main(int argc, char **argv)
{
int semid, nsems, i;
struct semid_ds seminfo;
unsigned short *ptr;
union semun arg;

printf("Program start...n");

if (argc sem_nsems;
printf("nsems=%dn",nsems);

/* 4now get the values from the command line */
if (argc != nsems + 2)
{
printf("%d semaphores in set, %d values specifiedn", nsems, argc-2);
exit(0);
}

/* 4allocate memory to hold all the values in the set, and store */
ptr = calloc(nsems, sizeof(unsigned short));
arg.array = ptr;
for (i = 0; i sem_nsems;

printf("nsems=%dn",nsems);

/* 4allocate memory to hold all the values in the set */
ptr = calloc(nsems, sizeof(unsigned short));
arg.array = ptr;

/* 4fetch the values and print */
semctl(semid, 0, GETALL, arg);
for (i = 0; i 

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3