Tag: linux

Ubuntu rusage错误

我正在将一些非常古老(和庞大的代码)代码从CentOS 6移植到Ubuntu 14.04。 注意,我已经安装了预期的旧版gcc,固定链接器引用等。 我的构建尝试正在进行中,但我坚持一件事。 有一个C文件试图创建一个rusage类型的结构,但Ubuntu环境给我以下错误: error: storage size of ‘rusage’ isn’t known 据我所知,我的所有路径看起来都是正确的。 我甚至查看了每个系统上的time.h和resource.h系统文件(CentOS在哪里工作,Ubuntu在哪里不起作用)。 似乎有一个wait.h文件的引用,其中rusage实际定义,只是相同。 在我的Ubuntu环境中还有什么可能遗漏的? 编辑:添加更多MCVE-ish详细信息…… 我的构建停止,出现以下错误: vmodem.c:6747: error: storage size of ‘rusage’ isn’t known 文件中的那一行很简单: struct rusage rusage 所需的包含也在该文件中( , 等) 不知道在这种情况下我还能提供什么……

在后台C linux中运行一个新的子进程

我正在尝试在后台运行一个新进程,以便继续使用父进程。 我用fork然后execl。 我试图在execl命令中添加参数&但它不起作用: execl(“newproc”,”newproc”,”arg1″,”&”,NULL); 有什么解决方案吗?

什么是gdbus库名称? 技术找到它?

使用Bluez gdbus.h函数需要包含哪些库? 我收到很多gdbus.h函数的undefined reference错误,所以我显然错过了一个库。 *有没有办法(在终端或其他方面)我可以找出头文件使用的库? 例如; 我可以使用locate gdbus.h头文件所在的locate gdbus.h 。 有没有办法可以找出gdbus.h需要什么库? 我目前的pkg-config是: pkg-config –cflags gio-2.0 dbus-glib-1 dbus-1 glib-2.0 gthread-2.0 pkg-config –libs gio-2.0 dbus-glib-1 dbus-1 glib-2.0 gthread-2.0 有了这个,我得到许多未定义的引用,如: agent.c:100:对’g_dbus_send_reply’的未定义引用 agent.c:104:对’g_dbus_send_reply’的未定义引用 agent.c:107:对’g_dbus_send_error’的未定义引用 我错过了什么图书馆?

如何编写接受包含整数和标点字符的用户输入的C程序?

解 #include #include int main() { char value[50]; char *end; int sum = 0; long conv; while(conv != 0 ) { printf(“Enter a measurement and unit(Ex: 4′ or 3\”;0′ or 0\” when done): “); fgets(value, 50, stdin); conv = strtol(value, &end, 10); if(strstr(value, “\'”) != NULL) { conv = strtol(value, &end, 10); sum = sum […]

命令行* linux

我正在尝试用C编写代码,它实现了一个简单的计算器。 输入应该来自命令行,所以例如我运行时 ./calculator 5 * 2 结果应该是10 问题是,当我写*它显示当前目录中的所有文件,并且该程序表现不佳。 无论如何都要克服这个问题? 我试图在这里或其他网站找到解决方案,但没有成功。 我需要*将被解释为char而不是linux命令。 谢谢。

Linux C读取目录

您好我想读取和写入目录,就像读取和写入文件一样。 我总是使用open , read , write和close函数,这意味着我使用了描述符。 但是在目录上执行此操作不起作用, open调用有效,但read返回-1而errno是EISDIR。 我被迫使用流来读取目录吗?

将客户端绑定到本地端口

我正在尝试配置我的TCP客户端以使用特定的本地端口连接到另一个TCP服务器。 我正在使用下面的代码,但它不起作用。 你知道我做错了什么,如果可能的话? 我正在使用LINUX机器。 谢谢 AFG int localport=32000; m_clientfd = socket( AF_INET, SOCK_STREAM, 0 ); assert( m_clientfd >= 0 ); // someone set the localport struct sockaddr_in sa_loc; struct hostent* pLocalHostInfo = gethostbyname( “localhost” ); long LocalHostAddress; memcpy( &LocalHostAddress, pLocalHostInfo->h_addr , pLocalHostInfo->h_length ); // Local memset(&sa_loc, 0, sizeof(struct sockaddr_in)); sa_loc.sin_family = AF_INET; sa_loc.sin_port = htons(localport); […]

shmat返回分段falut与errno = 13(EACCES)

我只想测试shmget()和shmat(),但似乎有些不对劲。 🙁 shmget()运行良好,但shmat()导致分段错误。 这是代码: #include #include #include #include #include int main(void) { key_t key=98;/* yes, just 98 for test */ int shid; char *str=NULL; shid = shmget(key, 4096, IPC_CREAT); printf(“shid:%d\n”,shid); str=(char*)shmat(shid,NULL,0); printf(“str:%d\n”,(int)str); printf(“errno:%d\n”, errno); str[0] = ‘h’; str[1] = ‘\0’; return 0; } 这是输出: shid:28246036 str:-1 errno:13 zsh: segmentation fault ./t1 thx:D

结束gcc C Linux中第一个成功的线程

我是一位经验丰富的C程序员,以前从未使用过线程或并行。 我一直在读它,但我没有看到我想要的例子。 我在Mac和Linux上使用gcc C编译器。 我想在我的系统中用一个新的过程X2替换一个重要的过程X,它将启动两个方法,因为只要机器有多个CPU,这两天就会在两个不同的处理器上运行(大多数情况下都是这样)。 这两种方法可能共享一些全局变量,但它们不会写入除自己的堆栈之外的任何内存位置。 他们每个人都会调用系统中的许多其他程序。 我没有想到任何其他并行处理。 一旦任何一个线程完成,那就是它! 这就是答案。 X2应该立即杀死另一个线程并将答案返回给任何调用X2的人。 也许我天真但我认为这是一个众所周知的线程使用。 示例代码请!

Linux和实时信号

我正在尝试编写在Linux中使用实时信号的简单程序。 但我遇到了奇怪的行为,首先是代码: #include #include #include #include #include”errhandling.h” #include #include #include void baz(int sig,siginfo_t* info,void *context) { if (sig==SIGUSR1) printf(“SIGUSR1 %d\n”,info->si_value.sival_int); else if(sig==SIGRTMIN) printf(“SIGRTMIN %d\n”,info->si_value.sival_int); else printf(“SIGRTMIN+1 %d\n”,info->si_value.sival_int); return ; } void sig_output() { sigset_t set; sigprocmask(0,NULL,&set); printf(“blokowane sa: “); if (sigismember(&set,SIGUSR1)) printf(“SIGUSR1 “); if(sigismember(&set,SIGUSR2)) printf(” SIGUSR2″); printf(“\n”); return ; } int received=0; int usr2=0; void […]