Mientras trabajaba en una máquina Linux y analizaba algún código, es posible que haya encontrado una convención de ver printk() y printf() escritos en alguna parte, y ahora se pregunta.
¿Cuál es la diferencia entre Printk() y Printf() en Linux?
Bueno, la respuesta se encuentra aquí en este artículo, profundicemos y entendamos uno a la vez. Para el iniciador inicial, printk es una función C de la interfaz del kernel de Linux que envía mensajes al registro del kernel , mientras que el comando printf se usa para mostrar una string, un número o cualquier otro especificador de formato en una ventana de terminal.
Una de las funciones del kernel de Linux más conocidas es printk() . Es la herramienta predeterminada para imprimir mensajes y el método más básico de seguimiento y depuración. El método printf() imprime los parámetros en el flujo de salida estándar , que se escriben entre comillas dobles invertidas.
Diferencia entre Printk() y Printf() en Linux:
imprimirk() |
imprimirf() |
---|---|
printk() es una función a nivel de kernel que puede imprimir en una variedad de niveles de registro, como se describe en Linux <kernel.h> . | printf() siempre imprimirá en un descriptor de archivo STD OUT. |
printk() no es una función de biblioteca estándar. | printf() es una función de biblioteca estándar de C. |
printk() es utilizado por el núcleo para imprimir. | Para imprimir algo desde la capa de aplicación, usa printf(). |
El método printk() se puede llamar en cualquier momento desde casi cualquier parte del kernel. | El método printf() no es tan robusto. |
Es inútil hasta un punto específico durante el proceso de inicio del kernel, antes de que se inicialice la consola. | A diferencia de printk(), siempre está listo ya que el sistema está listo para ejecutarlo de forma terminal. |
Ejemplo de printk() (usando el nivel de registro): printk("<2>This is GeeksForGeeks\n"); |
Ejemplo de printf() printf("This is GeeksForGeeks\n"); |
printk() está controlado por línea, lo que significa que solo los datos recibidos por un carácter de nueva línea se escriben en el terminal; de lo contrario, no se producen datos. | printf(), por el contrario, no se basa en líneas y el contenido se puede escribir incluso sin los caracteres de nueva línea. |
Quitar :
La capacidad de printk() para definir un nivel de registro es la principal distinción entre este y printf().
Nota: El kernel utiliza el nivel de registro para determinar si imprimir o no el mensaje en la consola.
En la terminal, el núcleo muestra todos los mensajes con un nivel de registro inferior a un valor definido.
Conclusión :
Aunque la diferencia entre ptink() y printf() es altamente volátil, son únicas y se explican por sí mismas, puede usar la función prink() para imprimir algo desde su sistema Linux o usar la función printf() para simplemente imprimir salidas.
¡La decisión es tuya y ahora puedes tomarla!
Publicación traducida automáticamente
Artículo escrito por icloudanshu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA