Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare
A New York HP ha messo al centro della scena HP IQ, la piattaforma di IA locale da 20 miliardi di parametri. L’abbiamo vista in funzione: è uno strumento che funziona, pensato per un target specifico, con vantaggi reali e limiti altrettanto evidenti
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è
La PNY GeForce RTX 5080 Slim OC si distingue nel panorama delle GPU di fascia alta per il design compatto a due slot, ispirato alla NVIDIA GeForce RTX 5080 Founders Edition. In questo test analizziamo comportamento termico e prestazioni in gioco, valutando se il formato ridotto comprometta o meno l'esperienza complessiva rispetto alle soluzioni più ingombranti presenti sul mercato.
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
HUAWEI WiFi Mesh X3 Pro Suite è probabilmente il router mesh più fotogenico che si possa acquistare oggi in Italia, ma dietro il guscio in acrilico trasparente e le luci LED dinamiche c'è una macchina tecnica costruita attorno allo standard Wi-Fi 7, con velocità teoriche Dual-Band fino a 3,6 Gbps e una copertura fino a 120 m² una volta abbinato il router principale all'extender incluso nel kit
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-08-2005, 16:42   #1
Corvo80
Member
 
Iscritto dal: Dec 2004
Città: Treviso e Udine
Messaggi: 258
[C e Linux] Come si fa?

Salve a tutti, premesso che sono solo alle prime armi con la programmazione in C mi chiedevo se poteste darmi una mano. Essenzialmente dovrei scrivere un semplice programmino che stampi sullo schermo un istogramma orizzontale del numero di processi per ogni utente, del tipo:

root: ******
mario: ***
antionio: ****
etc...

Sia chiaro: non voglio che mi facciate voi il programma, vorrei solo qualche dritta dato che sto navigando in alto mare. Vi ringrazio per qualunque consiglio possiate offrirmi.

Corvo80 è offline   Rispondi citando il messaggio o parte di esso
Old 22-08-2005, 17:01   #2
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
in queste cose io non sono molto esperto,però mi sembra una cosa simile al comando ps con le relative opzioni.Di sicuro c'è il sorgente a disposizione,potresti utilizzarlo come base per il tuo studio.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 22-08-2005, 17:03   #3
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Dai una occhiata in /proc, alle sottodirectory con un numero come nome. Ciascuna corrisponde a un processo, e il proprietario della directory è il proprietario del processo.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 22-08-2005, 17:09   #4
Corvo80
Member
 
Iscritto dal: Dec 2004
Città: Treviso e Udine
Messaggi: 258
Quote:
Originariamente inviato da RaouL_BennetH
in queste cose io non sono molto esperto,però mi sembra una cosa simile al comando ps con le relative opzioni.Di sicuro c'è il sorgente a disposizione,potresti utilizzarlo come base per il tuo studio.
Veramente contavo proprio di usare ps come system call all'interno del programma, solo che non mi pare ci siano abbastanza opzioni per quello che devo fare io...



Quote:
Originariamente inviato da ilsensine
Dai una occhiata in /proc, alle sottodirectory con un numero come nome. Ciascuna corrisponde a un processo, e il proprietario della directory è il proprietario del processo.
Grazie ma a questo punto è come usare il comando ps...
Corvo80 è offline   Rispondi citando il messaggio o parte di esso
Old 22-08-2005, 17:14   #5
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
ps non è una syscall, ma puoi invocarlo da programma e reindirizzarne l'output su un descrittore aperto dal programma. Stessa cosa puoi fare con top.
Poi però devi interpretare da programma l'output, che è stampato in un formato umanamente leggibile.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 22-08-2005, 17:28   #6
Corvo80
Member
 
Iscritto dal: Dec 2004
Città: Treviso e Udine
Messaggi: 258
Ok ho elaborato un'idea di algoritmo (in linguaggio ipotetico), ditemi se concettualmente può fungere:

1) Stampa il risultato di ps a file1 (con tutte le opzioni necessarie)
2) Pulisci file1 in modo da lasciare solo gli username (1 riga per ogni processo)
3) Considera il primo user
4) Richiamo a comando shell "grep" per sapere quante volte esso compare nel file, ovvero quanti processi ci sono per quell'user.
5) Append a file2 del tipo: "tizio: *********** " tramite ciclo for e a capo.
6) Cancella le prime righe su file1 (quelle dell'user precedentemente trovato)
7) Se file1 non è vuoto torna a punto 3) [ovviamente parliamo di programmazione strutturata quindi questa schifezza verrà tradotta in un ciclo while... ^_^]
8) Stampa a schermo file2
Corvo80 è offline   Rispondi citando il messaggio o parte di esso
Old 22-08-2005, 17:49   #7
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da Corvo80
1) Stampa il risultato di ps a file1 (con tutte le opzioni necessarie)
Ci sono metodi MOLTO più eleganti di insozzare il file system con file temporanei
Quote:
4) Richiamo a comando shell "grep" per sapere quante volte esso compare nel file, ovvero quanti processi ci sono per quell'user.
Se intendi usare grep e magari anche sed o altro per fare il "lavoro sporco", puoi anche considerare l'uso di un linguaggio di script (perl, bash, ecc.) senza scomodare un linguaggio compilato...
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 22-08-2005, 17:52   #8
Corvo80
Member
 
Iscritto dal: Dec 2004
Città: Treviso e Udine
Messaggi: 258
Quote:
Originariamente inviato da ilsensine
Ci sono metodi MOLTO più eleganti di insozzare il file system con file temporanei
Ecco, ad esempio? Cmq contavo di farlo cancellare al termine della computazione...

Quote:
Originariamente inviato da ilsensine
Se intendi usare grep e magari anche sed o altro per fare il "lavoro sporco", puoi anche considerare l'uso di un linguaggio di script (perl, bash, ecc.) senza scomodare un linguaggio compilato...
Eh... purtroppo devo farlo in C. Cmq per il resto dovrebbe funzionare, no?
Corvo80 è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2005, 11:45   #9
Corvo80
Member
 
Iscritto dal: Dec 2004
Città: Treviso e Udine
Messaggi: 258
Ok ho fatto. Il programma è funzionante anche se un po'sporco... Ora però dovrei apportare una modifica:

dovrei fare in modo che esso accetti come argomento un nome utente particolare e, in questo caso, stampare una stringa del tipo:

"utente tizio n processi"

Ovviamente devo fare riferimento ad argc per sapere se ci sono argomenti e ad argv[1] per leggere il primo, il problema è che non riesco a comparare la stringa contenuta in argv[1] con l'array di caratteri che leggo dal file...

Qualche idea?
Corvo80 è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2005, 11:55   #10
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
ps uxU pippo
Restituisce solo i processi dell'utente pippo
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2005, 12:30   #11
Corvo80
Member
 
Iscritto dal: Dec 2004
Città: Treviso e Udine
Messaggi: 258
Quote:
Originariamente inviato da ilsensine
ps uxU pippo
Restituisce solo i processi dell'utente pippo
Ok ma il problema è lo stesso: come faccio a passare allo script il nome "pippo" che il programma c deve leggere dall'argomento argv[1]?

Corvo80 è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2005, 12:33   #12
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Formatti con snprintf la stringa da passare alla chiamata system/exec.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2005, 12:46   #13
Corvo80
Member
 
Iscritto dal: Dec 2004
Città: Treviso e Udine
Messaggi: 258
Grazie, credo fosse la risposta che cercavo. Ora purtroppo devo uscire ma questo pomeriggio provo.

PS Devo includere qualche libreria particolare?
Corvo80 è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2005, 13:27   #14
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Quote:
Originariamente inviato da Corvo80

PS Devo includere qualche libreria particolare?
Ovvio

Codice:
#include <ilsensine.h>
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2005, 15:30   #15
Corvo80
Member
 
Iscritto dal: Dec 2004
Città: Treviso e Udine
Messaggi: 258
Ok grazie ancora.

Qualcuno mi spiega la sintassi di snprintf e sprintf? (n° e tipo di argomenti, come si usa, etc...) purtroppo non ho un manuale di C, ho provato a cercare in Internet ma non ho trovato...

Corvo80 è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2005, 15:41   #16
fantoibed
Senior Member
 
L'Avatar di fantoibed
 
Iscritto dal: May 2003
Città: Trieste, Pordenone
Messaggi: 920
Quote:
Originariamente inviato da Corvo80
Qualcuno mi spiega la sintassi di snprintf e sprintf? (n° e tipo di argomenti, come si usa, etc...) purtroppo non ho un manuale di C, ho provato a cercare in Internet ma non ho trovato...
http://www.die.net/doc/linux/man/man3/snprintf.3.html

Tra sprintf e snprintf ti consiglio sempre la seconda.

PS: Occhio ai buffer overflow!
__________________
buy here
fantoibed è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2005, 16:11   #17
Corvo80
Member
 
Iscritto dal: Dec 2004
Città: Treviso e Udine
Messaggi: 258
Come al solito siete stati gentilissimi.

Ora la prova del nove...

Se ho capito bene, per far si' che la stringa contenuta in argv[1] sia formattata e reperibile dovro- scrivere:

sprintf(argomento, argv[1]);

essendo argomento un puntatore a caratteri, giusto?
Corvo80 è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2005, 16:21   #18
fantoibed
Senior Member
 
L'Avatar di fantoibed
 
Iscritto dal: May 2003
Città: Trieste, Pordenone
Messaggi: 920
Manca il formato.

sprintf(argomento, formato, variabile);

sprintf(argomento, "%s", argv[1]);

Ovviamente argomento dovrà contenere abbastanza spazio, sia che l'allocazione sia stata fatta staticamente che dinamicamente.

Se hai bisogno di un maggiore controllo sugli argomenti passati da linea di comando, ti consiglio di guardare anche getopt():

http://www.die.net/doc/linux/man/man3/getopt.3.html
__________________
buy here

Ultima modifica di fantoibed : 24-08-2005 alle 16:28.
fantoibed è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2005, 16:49   #19
Corvo80
Member
 
Iscritto dal: Dec 2004
Città: Treviso e Udine
Messaggi: 258
segmentation fault

Corvo80 è offline   Rispondi citando il messaggio o parte di esso
Old 24-08-2005, 17:05   #20
Corvo80
Member
 
Iscritto dal: Dec 2004
Città: Treviso e Udine
Messaggi: 258
Ok mi sembra di impazzire: ho risolto il problema della segmentation fault ma ora ho un altro problema:

ho lanciato il programma con argomento knoppix:

a.out knoppix

ora, fila tutto liscio come l'olio fino a...

if (argomento == outp)
{
...
}


ma il risultato della condizione e' false

questo non ha senso, ho anche provato a far stampare i valori di argomento e outp prima del check e sono identici! Come mai?!!!

Corvo80 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare HP Imagine 2026: abbiamo visto HP IQ all’opera, ...
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è PNY RTX 5080 Slim OC, sembra una Founders Editio...
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei Wi-Fi 7 con il design di una vetta innevata: ecc...
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte Core Ultra 7 270K Plus e Core Ultra 7 250K Plus:...
PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu PC Specialist Lafité 14 AI AMD: assemblat...
Il dodicesimo lancio del razzo spaziale ...
Blue Origin sta assemblando il secondo l...
Meta moltiplica gli investimenti in data...
Addio riflessi fastidiosi? Samsung prese...
PlayStation 5, doccia fredda da Sony: i ...
Super Meat Boy 3D: annunciata la data d'...
XT View Matrix, il mid-tower Phanteks ch...
David Sacks lascia il ruolo di 'Crypto C...
LG All Stars 2026: quando l'installatore...
Addio ad Anna's Archive? Ecco la mossa l...
Addio al Mac Pro, Apple mette fine a un ...
Panasonic a MCE 2026: la rivoluzione sil...
Netflix alza la posta: il piano Premium ...
Nimbus Innovation Awards – Cloud Edition...
Wikipedia vieta i contenuti generati dal...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 23:14.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v