Articles of posix

Funzioni eseguite automaticamente durante il caricamento di librerie condivise

Quando si caricano librerie condivise in Windows, la chiamata LoadLibrary() causa l’esecuzione di DllMain nella libreria per ogni nuovo processo e gli allegati delle librerie di thread e per ogni deattaches di libreria di processi e thread. Esiste un meccanismo simile per Mac OS X, Linux e probabilmente altri sistemi operativi POSIX compatibili?

Chiamata API POSIX per elencare tutti i pthread in esecuzione in un processo

Ho un’applicazione multi-thread in un ambiente POSIX / Linux – Non ho controllo sul codice che crea i pthreads. Ad un certo punto il processo – proprietario dei pthreads – riceve un segnale. Il conduttore di quel segnale dovrebbe interrompere, annullare o interrompere tutti i pthreads e registrare quanti pthreads sono in esecuzione. Il mio […]

Intervallo del valore di ritorno della funzione principale

Che cosa dice la norma sui principali valori di ritorno? Dì solo fino a 255? Perché int main(void){ return 256; } echo $? ; # out 0

Atomicità di `write (2)` su un filesystem locale

Apparentemente POSIX lo afferma Un descrittore di file o uno stream è chiamato “handle” nella descrizione del file aperto a cui fa riferimento; una descrizione di un file aperto può avere diversi handle. […] Tutte le attività dell’applicazione che riguardano l’offset del file sul primo handle devono essere sospese finché non diventa nuovamente l’handle del […]

Linux 3.0: Esecuzione del processo figlio con piped stdin / stdout

Sotto Linux 3.0 / C ++: Vorrei una funzione che faccia quanto segue: string f(string s) { string r = system(“foo < s"); return r; } Ovviamente quanto sopra non funziona, ma tu hai l’idea. Ho una stringa che vorrei passare come input standard di un processo figlio di esecuzione “foo”, e quindi vorrei registrare […]

È ansible rinominare un file atomico (con sovrascrittura) su Windows?

Su POSIX systems rename (2) fornisce un’operazione di ridenominazione atomica, inclusa la sovrascrittura del file di destinazione, se esiste e se le autorizzazioni lo consentono. C’è un modo per ottenere la stessa semantica su Windows? So di MoveFileTransacted () su Vista e Server 2008, ma ho bisogno di questo per supportare Win2k e versioni successive. […]

Connettendo n comandi con pipe in una shell?

Sto cercando di implementare una shell in C. Posso eseguire comandi semplici bene con un semplice execvp () ma uno dei requisiti è di gestire comandi come questo: “ls -l | head | tail -4” con un ‘per ‘loop e solo una’ pipe () ‘istruzione che reindirizza stdin e stdout. Ora dopo giorni sono un […]

Qual è l’equivalente di Posix popen () nell’API Win32?

Esiste un equivalente approssimativo della funzione Linux / Unix stdio.h popen () nell’API Win32? Se sì, dove posso trovarlo? Modifica: ho bisogno di sapere questo per correggere un’omissione nella libreria standard D. Qualsiasi risposta deve utilizzare solo API Win32 standard, senza funzioni specifiche di MSVC. Inoltre, preferirei qualcosa che non sia orribilmente di basso livello, […]

Il file append atomic è UNIX?

In generale, cosa possiamo dare per scontato quando accodiamo a un file in UNIX da più processi? È ansible perdere dati (un processo che sovrascrive i cambiamenti dell’altro)? È ansible che i dati vengano manomessi? (Ad esempio, ogni processo aggiunge una riga per accodare un file di log, è ansible che due linee vengano manchiate?) […]

Quando dovrei usare mmap per l’accesso ai file?

Gli ambienti POSIX offrono almeno due modi per accedere ai file. Ci sono le chiamate di sistema standard open() , read() , write() e friends, ma c’è anche l’opzione di usare mmap() per mappare il file nella memoria virtuale. Quando è preferibile utilizzare l’uno sull’altro? Quali sono i loro vantaggi individuali che meritano di includere […]