在Linux、C程序中触发系统调用?

在Linux、C程序中触发系统调用?,c,linux,operating-system,C,Linux,Operating System,当下面的C程序在Linux中运行时,执行哪一行必须触发系统调用,为什么?什么是系统调用的调用 void main() { double x=1; double y; double *z; z=(double *)malloc(sizeof(double)); // line 1 scanf("%f", &y); // line 2 *z=sqrt(y);

当下面的C程序在Linux中运行时,执行哪一行必须触发系统调用,为什么?什么是系统调用的调用

void main()
{
    double x=1;
    double y;
    double *z;

    z=(double *)malloc(sizeof(double)); // line 1
    scanf("%f", &y);                    // line 2
    *z=sqrt(y);                         // line 3
    y=y*2.0;                            // line 4
    printf("y=%f, *z=%f\n", y, *z);     // line 5
    y=y/x;                              // line 6 
    printf("y=%f",y);                   // line 7
}

调用
malloc
调用系统调用,因为操作系统管理内存

调用
scanf
printf
调用系统调用,因为操作系统管理i/o操作


系统调用的调用是对操作系统服务的调用。

malloc
的调用调用系统调用,因为操作系统管理内存

调用
scanf
printf
调用系统调用,因为操作系统管理i/o操作


系统调用的调用是对操作系统服务的调用。

在大多数情况下,malloc()只能访问管理C堆空间的子分配器。malloc()调用可以调用系统调用来尝试扩展堆空间。
malloc()
不是C语言的一部分。它是
libc
库的一部分,由系统调用包装器和定义组成。因此,调用
malloc()
总是会导致系统崩溃call@user3629249我想你们中的一个应该提供一个链接。@我想你们中的一个应该提供一个链接。在大多数情况下,malloc()只能到达管理C堆空间的子分配器。malloc()调用可以调用系统调用来尝试扩展堆空间。
malloc()
不是C语言的一部分。它是
libc
库的一部分,由系统调用包装器和定义组成。因此,调用
malloc()
总是会导致系统崩溃call@user3629249我想你们中的一个应该提供一个链接。@MartinJames,我想你们中的一个应该提供一个链接。