คำถามติดแท็ก c

C เป็นภาษาโปรแกรมคอมพิวเตอร์ทั่วไปที่ใช้สำหรับระบบปฏิบัติการเกมและงานที่มีประสิทธิภาพสูงอื่น ๆ และแตกต่างอย่างชัดเจนจาก C ++ ได้รับการพัฒนาในปี 1972 โดย Dennis Ritchie สำหรับใช้กับระบบปฏิบัติการ Unix

4
ทำไมการจัดการเหตุการณ์ของระบบปฏิบัติการบางระบบจึงเขียนด้วย asm แทนที่จะเป็น c
คำถามของฉันคือทำไมทุกวันนี้การจัดการเหตุการณ์ของระบบปฏิบัติการบางอย่างยังคงเขียนในภาษาแอสเซมบลีแทนที่จะเป็นภาษาระดับสูงกว่าเช่น C เมื่อเคอร์เนลเขียนเองส่วนใหญ่เป็น C
17 kernel  c  assembly 

3
gcc ไม่สามารถเชื่อมโยงไปยัง pthread ได้หรือไม่
ฉันเพิ่งติดตั้ง XUbuntu 11.10 64 บิต แต่ฉันมีปัญหาในการรวบรวมตัวอย่าง 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){ …
17 c  libraries  gcc  xubuntu 

5
“ การเรียกของระบบ” มีความหมายอย่างไรหากไม่มีการใช้งานในภาษาโปรแกรม
ฉันต้องการที่จะเข้าใจคำว่า "การเรียกระบบ" ฉันคุ้นเคยกับการเรียกใช้ระบบเพื่อรับบริการเคอร์เนลจากแอปพลิเคชัน userspace ส่วนที่ฉันต้องการชี้แจงด้วยคือความแตกต่างระหว่าง "การเรียกระบบ" และ "การใช้งาน C ของการเรียกระบบ" นี่คือข้อความที่ทำให้ฉันสับสน: บนระบบที่คล้าย Unix API นั้นมักจะเป็นส่วนหนึ่งของการใช้งาน C library (libc) เช่น glibc ซึ่งมีฟังก์ชั่น wrapper สำหรับการโทรของระบบซึ่งมักจะตั้งชื่อเหมือนกับการเรียกระบบที่พวกเขาเรียก "การเรียกระบบที่พวกเขาเรียก" คืออะไร? แหล่งของพวกเขาอยู่ที่ไหน ฉันสามารถรวมพวกเขาโดยตรงในรหัสของฉัน? "การเรียกของระบบ" ในแง่สามัญเพียงแค่ POSIX อินเตอร์เฟสที่กำหนด แต่จริง ๆ แล้วเห็นการใช้งานอย่างใดอย่างหนึ่งสามารถตรวจสอบแหล่ง C และในนั้นดูว่าผู้ใช้จริงเพื่อการสื่อสารเคอร์เนลจริงไป? บันทึกพื้นหลัง: /devฉันพยายามที่จะเข้าใจถ้าในท้ายที่สุดแต่ละฟังก์ชั่นคปลายขึ้นโต้ตอบกับอุปกรณ์จาก
14 kernel  c  posix  system-calls 

3
แปลงไฟล์ปฏิบัติการกลับเป็นซอร์สโค้ด C
น่าเสียดายที่ฉันทำซอร์สโค้ดของฉันหายและฉันเพิ่งมีไฟล์เอาต์พุตที่สร้างด้วย gcc ใน linux และฉันไม่มีสิทธิ์เข้าถึงพีซีของฉันเลยตอนนี้มีวิธีแปลงไฟล์เอาต์พุตเป็นไฟล์ต้นฉบับ (ใน c ภายใต้ linux) หรือไม่

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 …
12 c  compiler 

4
ทำไมลูกของ vfork หรือ fork call _exit () แทนที่จะออก ()
จากหน้าคนของvfork(): vfork () แตกต่างจาก fork () ซึ่งผู้ปกครองจะถูกระงับจนกว่าเด็กจะเรียกร้องให้ execve (2) หรือ _exit (2) ชายด์แบ่งใช้หน่วยความจำทั้งหมดกับพาเรนต์รวมถึงสแต็กจนกว่า execve () จะออกโดยเด็ก เด็กต้องไม่ส่งคืนจากฟังก์ชันปัจจุบันหรือ call exit () แต่อาจเรียก _exit () ทำไมเด็กควรใช้_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
เหตุใดจึงกำหนด“ timer_t” ใน“ time.h” บน Linux แต่ไม่ใช่ OS X
ขณะที่ฉันอ่านไฟล์ซอร์สโค้ด C ฉันพบการประกาศนี้ (ซอร์สโค้ดนี้เขียนขึ้นสำหรับโปรแกรมระบบ linux นี่เป็นข้อมูลที่สำคัญมาก) #include <time.h> #include <stdio.h> static timer_t* _interval_timer; ... ตอนแรกฉันอยากรู้เพิ่มเติมเกี่ยวกับ 'timer_t' ดังนั้นฉันจึง googled 'time.h' เพื่อรับข้อมูลส่วนหัว แต่ไม่มีคำใด ๆ เกี่ยวกับ 'timer_t' เพียง แต่พูดถึง 'time_t' เท่านั้น ในความอยากรู้ฉันค้นหาและเปิดไฟล์ไลบรารี 'time.h' c มาตรฐานในคอมพิวเตอร์ 'mac' ของฉัน (ดังที่คุณทราบ / usr / include โฟลเดอร์เก็บไฟล์ไลบรารีมาตรฐาน c) แต่ไฟล์นี้เป็นไฟล์เดียวกับ googled ก่อนหน้านี้ ในที่สุดฉันก็เปิดระบบปฏิบัติการ linux ของฉัน (Ubuntu) โดยใช้เครื่องเสมือนและเปิด 'time.h' …
11 linux  c  darwin 

3
Man man สำหรับไลบรารี C และ C ++ มาตรฐานบน Fedora 14
ฉันจะติดตั้งพวกเขาได้อย่างไร ในปัจจุบันให้ฉัน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 …

10
สภาพแวดล้อมการพัฒนาสำหรับ C
มองหาแนวคิดในการตั้งค่าสภาพแวดล้อมการพัฒนาที่สะดวกและมีประสิทธิผลสำหรับการพัฒนา C ฉันพบว่าการแก้ไข C ด้วย Vimมีประโยชน์มาก แต่ฉันต้องการรับตัวอย่างของคำแนะนำที่กว้างขึ้น
10 command-line  c  editors  ide 

1
การคอมไพล์ซอร์สโค้ดใน Debian GNU / Hurd แตกต่างจาก Debian GNU / Linux อย่างไร
ฉันพยายามรวบรวมlibnetfilter_conntrackแหล่งจาก github ตามที่ร้องขอiptablesในขณะที่รวบรวมiptablesและเนื่องจากสิ่งเหล่านี้ไม่สามารถใช้ได้ใน repo ซอฟต์แวร์ 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 …
9 debian  compiling  c  hurd 

2
รับเอาต์พุตของ "posix_spawn"
ดังนั้นฉันจึงสามารถเรียกใช้กระบวนการใน Unix / Linux โดยใช้ POSIX แต่มีวิธีที่ฉันสามารถจัดเก็บ / เปลี่ยนเส้นทางทั้ง 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 …
9 linux  c  tcp 


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.