Aula 10: Programa que roda ls do pid do programa #20

Open
opened 2025-06-04 21:43:28 -03:00 by NRZCode · 1 comment

Proposta do exercício:

Elaborar um programa que usa as funções getpid() e system para imprimir a saída do comando ls -l /proc/SELF/fd onde SELF é a saída de getpid() (O PID da sessão do programa em execução)

Solução:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

/*
 * Usando as funções getpid e system,
 * rodar o comando "ls -l /proc/SELF/fd"
 * onde SELF é a saída de getpid()
 */
int main(void) {
    char strpid[16];
    char cmd[64] = "ls -l ";
    char *path[] = { "/proc/", strpid, "/fd", NULL };

    sprintf(strpid, "%d", getpid());
    for (int i = 0; path[i] != NULL; i++)
        strcat(cmd, path[i]);
    printf("%s\n", cmd);
    fflush(stdout);

    // sprintf(cmd, "ls -l /proc/%d/fd", getpid());
    system(cmd);
    return 0;
}
Proposta do exercício: Elaborar um programa que usa as funções getpid() e system para imprimir a saída do comando `ls -l /proc/SELF/fd` onde SELF é a saída de getpid() (O PID da sessão do programa em execução) Solução: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> /* * Usando as funções getpid e system, * rodar o comando "ls -l /proc/SELF/fd" * onde SELF é a saída de getpid() */ int main(void) { char strpid[16]; char cmd[64] = "ls -l "; char *path[] = { "/proc/", strpid, "/fd", NULL }; sprintf(strpid, "%d", getpid()); for (int i = 0; path[i] != NULL; i++) strcat(cmd, path[i]); printf("%s\n", cmd); fflush(stdout); // sprintf(cmd, "ls -l /proc/%d/fd", getpid()); system(cmd); return 0; } ```
Author

Resultado:

ls -l /proc/281973/fd
total 0
lrwx------ 1 nrz nrz 64 jun  4 21:43 0 -> /dev/pts/2
lrwx------ 1 nrz nrz 64 jun  4 21:43 1 -> /dev/pts/2
lrwx------ 1 nrz nrz 64 jun  4 21:43 2 -> /dev/pts/2
Resultado: ```txt ls -l /proc/281973/fd total 0 lrwx------ 1 nrz nrz 64 jun 4 21:43 0 -> /dev/pts/2 lrwx------ 1 nrz nrz 64 jun 4 21:43 1 -> /dev/pts/2 lrwx------ 1 nrz nrz 64 jun 4 21:43 2 -> /dev/pts/2 ```
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: blau_araujo/cblc#20
No description provided.