Questions tagged «c»

C是用于操作系统,游戏和其他高性能工作的通用计算机编程语言,与C ++明显不同。它由Dennis Ritchie于1972年开发,用于Unix操作系统。


3
gcc无法链接到pthread?
我最近安装了64位XUbuntu 11.10,但是在编译最简单的pthread示例时遇到问题。 这是代码pthread_simple.c: #include <stdio.h> #include <pthread.h> main() { pthread_t f2_thread, f1_thread; void *f2(), *f1(); int i1,i2; i1 = 1; i2 = 2; pthread_create(&f1_thread,NULL,f1,&i1); pthread_create(&f2_thread,NULL,f2,&i2); pthread_join(f1_thread,NULL); pthread_join(f2_thread,NULL); } void *f1(int *x){ int i; i = *x; sleep(1); printf("f1: %d",i); pthread_exit(0); } void *f2(int *x){ int i; i = *x; sleep(1); …
17 c  libraries  gcc  xubuntu 

5
如果不是用编程语言实现的话,“系统调用”是什么意思?
我想了解“系统调用”一词。我很熟悉,系统调用用于从用户空间应用程序获取内核服务。 我需要澄清的部分是“系统调用”和“系统调用的C实现”之间的区别。 这句话使我感到困惑: 在类似Unix的系统上,该API通常是C库(libc)的实现的一部分,例如glibc,该库为系统调用提供包装函数,通常将其命名为与调用的系统调用相同的名称。 什么是“他们调用的系统调用”?他们的来源在哪里?我可以直接将它们包含在我的代码中吗? 从一般意义上讲,“系统调用”只是一个POSIX定义的接口,但实际上要查看实现,可以检查C源代码,并在其中查看内核通信的实际用户空间实际上如何运行? 背景说明:最后,我试图了解每个c函数是否最终与中的设备进行交互/dev。
14 kernel  c  posix  system-calls 


2
有没有办法镜像USB输出?
我目前正在为一个项目编写程序。 它是用于盲文阅读系统的,其中我有一个通过USB连接的盲文显示器,该显示器由称为brltty的程序控制。 该项目的要求之一是具有连接多个盲文显示器的能力,尽管只允许主显示器控制系统。 我认为最简单的方法是,不必将命令发送到程序中每个错误的实例,而是可以将输出到主USB的内容镜像到每个USB端口。 这可能吗?
12 usb  c  tty  output  mirror 

2
为什么我不能运行这个C程序?
我正在尝试运行我的第一个“过程”程序,但出现以下错误: ./fork.c: line 4: syntax error near unexpected token `(' ./fork.c: line 4: `int main()' 我很确定代码是正确的: #include <sys/types.h> #include <stdio.h> int main() { pid_t pid; printf("Hello fork()\n"); switch(pid=fork()) { case -1: printf("Error by fork().....\n"); exit(0); case 0: printf("I'm the child process \n"); break; default: printf("I'm the dad \n"); break; } …
12 c  compiler 

4
为什么vfork或fork的子代调用_exit()而不是exit()?
从手册页vfork(): vfork()与fork()的不同之处在于,父级被挂起,直到子级对execve(2)或_exit(2)进行调用。子级与其父级(包括堆栈)共享所有内存,直到子级发出execve()为止。子级不得从当前函数返回或调用exit(),而可以调用_exit()。 为什么孩子应该使用an _exit()而不是简单地打电话exit()?我希望这对vfork()和都适用fork()。
12 c  system-calls  fork  exit 

1
我怎么知道哪个unistd.h文件被加载?
unistd.h我的Ubuntu Linux中有几个文件。我一上来/usr/include/asm/unistd.h。该文件具有以下指令: # ifdef __i386__ # include "unistd_32.h" # else # include "unistd_64.h" # endif 在该文件夹中,我可以找到这些文件(unistd_32.h和unistd_64.h)。 但是/usr/src/linux-headers-2.6.31-22/include/asm-generic/还有另一个unistd.h以该指令开头的: #if !defined(_ASM_GENERIC_UNISTD_H) || defined(__SYSCALL) #define _ASM_GENERIC_UNISTD_H 所以,问题是:我怎么知道加载了哪一个?有什么方法可以在运行时使用Java进行检查吗?
11 linux  c  java 

2
为什么在Linux而不是OS X的“ time.h”中定义“ timer_t”
在阅读C源代码文件时,发现了此声明。(此源代码是为Linux系统程序编写的。这是非常重要的信息) #include <time.h> #include <stdio.h> static timer_t* _interval_timer; ... 首先,我想了解更多有关“ timer_t”的信息。所以我用谷歌搜索“ time.h”来获取标题信息。但是,没有关于“ timer_t”的任何消息,仅提及“ time_t”。 出于好奇,我在“ mac”计算机中搜索并打开了“ time.h” c标准库文件(如您所知,/ usr / include文件夹存储了c标准库文件。)但是,该文件与以前用谷歌搜索的文件相同。 最后,我使用虚拟机打开了Linux os(ubuntu),并在linux c标准库文件夹(文件夹路径与OSX相同)中打开了“ time.h”。如我所料,Linux中的“ time.h”文件具有timer_t的声明。 我在下面添加了声明“ timer_t”类型的代码行。 #if !defined __timer_t_defined && \ ((defined _TIME_H && defined __USE_POSIX199309) || defined __need_timer_t) # define __timer_t_defined 1 # include <bits/types.h> /* Timer …
11 linux  c  darwin 

3
Fedora 14上标准C和C ++库的手册页
如何安装?目前,man fopen给我No manual entry for fopen。我已经安装了编译器,并已验证一切确实可以正常运行。 更新:这是我在Fedora 14上尝试建议的解决方案时得到的: [root@damien agnel]# yum install man-pages libstdc++-docs Loaded plugins: langpacks, presto, refresh-packagekit Adding en_US to language list Setting up Install Process Package man-pages-3.25-1.fc14.noarch already installed and latest version Package libstdc++-docs-4.5.1-4.fc14.x86_64 already installed and latest version Nothing to do [root@damien agnel]# man std::iostream No …


1
在Debian GNU / Hurd中编译源代码与Debian GNU / Linux有何不同?
我试图libnetfilter_conntrack从github 编译源代码,因为它是iptables在编译iptables时要求的,并且其中的任何一个在HURD软件库中都不可用,并且在配置时最终出错libnetfilter_conntrack checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... no checking whether ln -s works... yes configure: error: Linux only, dude! 我的内核是 $ uname -a GNU debian 0.9 GNU-Mach 1.8+git20190109-486/Hurd-0.9 …
9 debian  compiling  c  hurd 

2
获取`posix_spawn`的输出
因此,我可以使用POSIX在Unix / Linux中运行进程,但是有什么方法可以将进程的STDOUT和STDERR都存储/重定向到文件?该spawn.h头包含减速posix_spawn_file_actions_adddup2看起来相关,但我不知道怎么和使用它。 该过程产生: posix_spawn(&processID, (char *)"myprocess", NULL, NULL, args, environ); 输出存储: ...?
9 c  posix  fork 

1
/ dev / tcp在Linux中不存在
我正在将C / pro * c代码从UNIX移植到Linux。代码是: #define __NFDBIT (8 * sizeof(unsigned long)) #define __FD_SETSIZ 1024 #define __FDSET_LONG (__FD_SETSIZ/__NFDBIT) typedef struct { unsigned long fds_bits [__FDSET_LONG]; } __ernel_fd_set; typedef __ernel_fd_set fd_set_1; int main() { fd_set_1 listen_set; int listen_sd; int socket_id; FD_ZERO(&listen_set); socket_id = t_open("/dev/tcp", O_RDWR|O_NONBLOCK, (struct t_info *) 0); if ( socket_id …
9 linux  c  tcp 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.